<?php
/**
 * WebProduction Shop (triumph)
 * @copyright (C) 2011-2012 WebProduction (tm) <webproduction.com.ua>
 *
 * This program is commercial software; you cannot redistribute it and/or
 * modify.
 */

/**
 * @author Egor Gerasimchuk <milhous@webproduction.ua>
 * @copyright WebProduction
 * @package Triumph
 */
class Triumph_MediaService extends ServiceUtils_AbstractService{

    /**
     * Получить все фотоальбомы
     *
     * @return Photoalbum
     */
    public function getPhotoAlbumAll() {
        $x = new Photoalbum();
        $x->setOrder('cdate', 'DESC');
        return $x;
    }

    /**
     * Получить альбом по id
     * @param $id
     * @return Photoalbum
     * @throws ServiceUtils_Exception
     */
    public function getPhotoAlbumById($id) {
        try {
            return $this->getObjectByID($id, 'Photoalbum');
        } catch (Exception $e) {}
        throw new ServiceUtils_Exception('Photoalbum by id not found');
    }

    /**
     * @return Photo
     */
    public function getPhotoAll() {
        $x = new Photo();
        $x->setOrder('cdate', 'DESC');
        return $x;
    }

    /**
     * Получить все фотографии альбома
     * @param $photoAlbumId
     * @return Photo
     */
    public function getPhotoByAlbumId($photoAlbumId) {
        $x = $this->getPhotoAll();
        $x->setHidden(0);
        $x->setPhotoalbumid($photoAlbumId);
        return $x;
    }

    /**
     * Удалить фотографии
     * @param $photoAlbumid
     * @param $idArray
     */
    public function deletePhoto($photoAlbumid, $idArray) {
        $x = $this->getPhotoAll();
        $x->setPhotoalbumid($photoAlbumid);
        $x->addWhereArray($idArray);
        $x->delete();
    }

    /**
     * Добавить фотографию в фотоальбом
     * @param $photoAlbumId
     * @param $name
     * @param $image
     * @throws ServiceUtils_Exception
     *
     * @TODO Проверку на размер фотографий обжимать их сразу до меншего
     */
    public function addTriumphImage($photoAlbumId, $name, $image) {
        $ex = new ServiceUtils_Exception();
        if (!$name) {
            $ex->addError('incorrectName');
        }
        if (!Checker::CheckImageFormat($image)) {
            $ex->addError('incorrectImage');
        }
        if ($ex->getCount()) {
            throw $ex;
        }
        $z = new XPhoto;
        $z->setName($name);
        $z->setPhotoalbumid($photoAlbumId);
        if ($image) {

            $dir = MEDIA_PATH . 'photoalbum/';
            if ($dh = @opendir($dir)) {

            }else {
                mkdir(MEDIA_PATH . 'photoalbum/');
            }
            $filename = mt_rand(0, 999999) . time() . '.png';
            copy($image, $dir . $filename);
            $z->setImage($filename);
        }
        $z->insert();
    }
}
